const koa = require('koa')
const router = require('koa-router')()

const app = new koa()

router.get('/', async ctx => { 
    ctx.body = '起始页'
})
router.get('/home', async ctx => { 
    ctx.body = '主页'
})

/*
    中间键是会默认最先执行的，无论是应用级中间键 还是 路由级中间键 都会优先执行 
        所以 即使我们的中间键的代码是放在最后面的  服务器也会先解析，可以理解成是预解洗
*/ 

app.use(async (ctx, next) => { 
    console.log(new Date())
    console.log('这是一个中间键')
    await next()

    // 这个就是错误处理  当我们访问不存在的一个路由的时候 不会让浏览器直接跳转到报错的页面
    // 而是让我们呢处理一些报错的页面
    if (ctx.status == 404) { 
        ctx.status = 404
        ctx.body = '这是一个404页面'
    }
})

app.use(router.routes()) 
app.use(router.allowedMethods)

app.listen(666, () => { 
    console.log('Server is running on port 666')
})